<?php
/*
hifini网站增加了一个人机认证的过程，这个方法是获取人机认证后获取到对应的两个key的。
*/

include_once './config.php';

function purl_key($play_key = '')
{
  $config = get_config();

  // 设置请求 URL
  $url = 'https://hifini.com/tac_m_play.htm';
  // 设置 POST 数据
  $postData = [
    'play_key' => $play_key
  ];
  // 将 POST 数据转换为 URL 编码格式
  $postFields = http_build_query($postData);
  // 设置请求头
  $headers = [
    'Content-Type: application/x-www-form-urlencoded',
    // 'Cookie: bbs_sid=0sfv914holsst789t3gi7g00kd; tac_tmp=Fzl8y0o6GMPqtBb2vWtJkJQaFO8lzNGpJpOhBPbJzRBPGAwri9nuPkWHhi2IWoAwwwHiFiNicoma5xdvg',
    'Cookie: tac_tmp=' . trim($config),
    // 'Cookie: bbs_sid=0sfv914holsst789t3gi7g00kd;tac_tmp=' . 'Fzl8y0o6GMPqtBb2vWtJkJQaFO8lzNGpJpOhBPbJzRBPGAwri9nuPkWHhi2IWoAwwwHiFiNicoma5xdvg',
  ];
  // 初始化 cURL 会话
  $ch = curl_init($url);
  // 设置 cURL 选项
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应作为字符串返回
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁用 SSL 证书验证（不推荐）
  $response = curl_exec($ch);
  $res = '';
  // 检查是否有错误发生
  if (curl_errno($ch)) {
    // echo 'Error--:' . curl_error($ch);
    $res = json_encode(new stdClass());
  } else {
    // 尝试将响应解码为 PHP 对象
    $data = json_decode($response);
    $purl_key1 = '';
    $purl_key2 = '';
    $verificationFail = false; // 人机认证失败，需要重置 Cookie 里面的 tac_tmp

    // // 检查解码是否成功 && 假设 JSON 响应是一个对象，并且有一个名为 "key" 的属性
    if (json_last_error() === JSON_ERROR_NONE && property_exists($data, 'purl_key1')) {
      $purl_key1 = $data->purl_key1;
      $purl_key2 = $data->purl_key2;
    } elseif (preg_match('/人机验证失败/is', $response, $matches)) {
      // echo $response;
      // echo $matches[0];
      $verificationFail = true;
    }

    $res = json_encode([
      'purl_key1' => $purl_key1,
      'purl_key2' => $purl_key2,
      'verificationFail' => $verificationFail,
      'tac_tmp' => $config,
    ]);

  }
  // 关闭 cURL 会话
  curl_close($ch);
  return $res;
}

if (isset($_GET['play_key'])) {
  $play_key = isset($_GET['play_key']) ? $_GET['play_key'] : '';
  echo purl_key($play_key);
}

?>